//-----------------------------------------------------------------------------
// Name: Bounding.h
// Auth: Dante Ratto, Robert Darty, & Paul Godfrey
// Desc: Bounding Boxes
//-----------------------------------------------------------------------------

#ifndef _BOUNDING_
#define _BOUNDING_

#include <GL/glut.h>

//-----------------------------------------------------------------------------
// cBounding
//-----------------------------------------------------------------------------
class cBounding
{
public:
	// Constructors:
	cBounding();
	cBounding(float minX, float maxX, float minY, float maxY, float minZ, float maxZ);
	~cBounding();

	// cBounding Methods:

	//-----------------------------------------------------------------------------
	void SetBounding(float, float, float, float, float, float);
	// Desc: Sets bounding box max/mins

	//-----------------------------------------------------------------------------
	void SetSphere(float, float, float, float, enum eCollisionType);
	// Desc: Sets bounding sphere details

	//-----------------------------------------------------------------------------
	float cBounding::getMinX();
	// Desc: Gets minX

	//-----------------------------------------------------------------------------
	float cBounding::getMaxX();
	// Desc: gets maxX

	//-----------------------------------------------------------------------------
	float cBounding::getMinY();
	// Desc: gets min y

	//-----------------------------------------------------------------------------
	float cBounding::getMaxY();
	// Desc:gets max y

	//-----------------------------------------------------------------------------
	float cBounding::getMinZ();
	// Desc:gets min z

	//-----------------------------------------------------------------------------
	float cBounding::getMaxZ();
	// Desc: gets max z 

	//-----------------------------------------------------------------------------
	float GetSphereRadius();
	// Desc: gets bounding sphere radius

	//-----------------------------------------------------------------------------
	float GetSphereX();
	// Desc: gets bounding sphere x

	//-----------------------------------------------------------------------------
	float GetSphereY();
	// Desc: gets bounding sphere y

	//-----------------------------------------------------------------------------
	float GetSphereZ();
	// Desc: gets bounding sphere z

	//-----------------------------------------------------------------------------
	enum eCollisionType GetType();
	// Desc: gets bounding type
	
	//-----------------------------------------------------------------------------
	int getPosition();
	// Desc: gets mIPosition

	//-----------------------------------------------------------------------------
	void setPosition();
	// Desc: Sets mIPosition

	//-----------------------------------------------------------------------------
	bool getStatus();
	// Desc: Gets status

private:
	// Members:
	float mMinX;
	float mMaxX;
	float mMinY;
	float mMaxY;
	float mMinZ;
	float mMaxZ;
	float mXPos;
	float mYPos;
	float mZPos;
	float mRadius;

	int mIPosition;

	bool mBStatus;

	enum eCollisionType mType;
};

//-----------------------------------------------------------------------------
// Functions:
//-----------------------------------------------------------------------------
cBounding* GetBounding(int i);
cBounding* GetBounding();

#endif